package com.tiancheng.trade.payment.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.io.Serializable;
import java.time.LocalDate;

/**
 * 支付流水明细
 *
 * @author kellen
 * @date 2024/4/29
 */
@Getter
@Setter
@NoArgsConstructor
@TableName(value = "flow_detail")
public class PaymentFlowDetail implements Serializable {

    // 主键
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    // 支付流水号
    private String flowId;
    // 支付单号
    private String paymentId;
    // 子订单号
    private String subOrderId;
    // 商户编号
    private String merchantCode;
    // 商户名称
    private String merchantName;
    // 商品编码
    private String productCode;
    /**
     * 交易中台对应的产品id
     */
    private String productId;
    // 商品名称
    private String productName;
    // 商品详情
    private String productDetail;
    // 商品数量
    private Integer productCount;
    // 子订单应收金额
    private Integer orderAmount;
    // 子订单实收金额
    private Integer amount;
    /**
     * 子订单流水号
     */
    private String subFlowId;
    /**
     * 渠道应核销日期
     */
    private LocalDate expectSettleDate;
    /**
     * 清分异常标记：ING=清分中；ERROR=异常；SUCCESS=清分完成
     */
    private String settleStatus;
    /**
     * 清分异常说明
     */
    private String settleErrorDesc;
    /**
     * 支付渠道子商户号
     */
    private String subMerchantId;
    /**
     * 交易中台商户进件id
     */
    private Long merchantRegId;
    /**
     * 企业用户号
     */
    private String enterpriseCode;
    /**
     * 总优惠金额
     */
    private Integer discount;
    /**
     * 平台优惠金额
     */
    private Integer platformDiscount;
    /**
     * 渠道优惠金额
     */
    private Integer channelDiscount;
    /**
     * 清分状态：ING=清分中；ERROR=异常；SUCCESS=清分完成
     */
    private String couponSettleStatus;
    /**
     * 清分规则编码，M开头-商户清分规则，P开头商品清分规则
     */
    private String settleRuleCode;
}
